iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0

是什麼構成一篇漢語文章的呢?從小到大列舉,最小單位是「字」(通常狀況不會再去拆部首),「字」組成「詞」,「詞」再組成「句」,「句」組成「段落」,「段落」組成「文章」。

計算機要處理漢語時,第一步通常就是「分詞」,例如說 嫉妒使我面目全非 ,可以拆解成「嫉妒」、「使」、「我」、「面目」、「全」、「非」。也許有人會把「面目全非」直接分一個詞,也不能說錯,自然語言本就沒必要只能唯一拆解。

法咒(程式語言)跟自然語言仍是有些共通之處,同樣能拆解成不同層級。

想像編譯器讀取音界咒文件時,它看見的是一個又一個的字元,而分詞器做的事情就很接近上述的漢語分詞器。但法咒(程式語言)不能有岐義,因此需要藉助特殊符號,如空白鍵或音界號來確定詞與詞之間的邊界。

來看個範例:

元.人數=(11+3)*4
人數+1

第一行 元.人數=(1+3)*4 依序是分解為

  1. ,關鍵字「元」
  2. ,音界號
  3. 人數,這是個變數
  4. ,等號
  5. ,左括號
  6. 11,數字
  7. ,運算子「加」
  8. ,數字
  9. ,右括號
  10. ,運算子「乘」
  11. ,數字
  12. \n,換行

而第二行 人數+1 依序是

  1. 人數,這是個變數
  2. ,運算子「加」
  3. ,數字
  4. \n,換行

定義

下表羅列了零・一版音界咒的所有詞:

種類 細分含義
關鍵字
左括號
右括號
運算子
運算子
運算子
運算子
等號
音界號
\n 換行
[0-9]+ 數字
除以上詞之外的所有字串 變數

前幾項全是單字詞,要分出它們是再簡單不過,但最後兩種詞「數字」、「變數」就可能是多個字組成的了。

[0-9]+ 是正規表達式,其意思是,字串由一到多個0123456789組成。

而除了特殊詞之外的所有字串都能當作變數,這個定義是否會太過寬鬆?或是造成歧義?這些問題留待下一章實作時,再來討論。


上一篇
零.一版編譯目標:精五門(RISC-V)真言極簡子集
下一篇
零.一版分詞器(二)算法及其狀態機表示
系列文
離塵指引.卷之一.試結丹:程式語言自舉13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言